﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using AccesoData.Interfaces;
using Entidades;
using MySql.Data.MySqlClient;

namespace AccesoData.DAOMySql
{
    public class DAORecaudoRamoMySql:ConexionBaseDatos, IDAORecaudoRamo
    {
        /// <summary>
        /// agrega un recaudo asociado a un ramo
        /// </summary>
        /// <param name="recaudo"></param>
        /// <param name="ramo"></param>
        /// <returns></returns>
        public int AgregarRecaudoRamo(Entidad recaudo, Entidad ramo)
        {
            try
            {
                MySqlCommand comando = new MySqlCommand();
                comando.Connection = Conexion();
                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = "AgregarRecaudoRamo";


                comando.Parameters.AddWithValue("@recaudo", recaudo.Id);
                comando.Parameters.AddWithValue("@ramo", ramo.Id);

                comando.Parameters["@recaudo"].Direction = ParameterDirection.Input;
                comando.Parameters["@ramo"].Direction = ParameterDirection.Input;

                int id = 0;
                MySqlDataReader reader = comando.ExecuteReader();
                while (reader.Read())
                {
                    id = (reader[0] == DBNull.Value) ? 0 : (int)reader[0];
                }

                CerrarConexion();
                return id;

            }
            catch (Exception)
            {

                return -1;
            }
        }

        public bool EliminarRecaudoRamo(int idRecaudoRamo)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Obtiene todos los recaudos asociados a un ramo
        /// </summary>
        /// <param name="ramo"></param>
        /// <returns></returns>
        public List<Recaudo> ObtenerRecaudosRamo(Entidad ramo)
        {
            try
            {

                MySqlCommand comando = new MySqlCommand();
                List<Recaudo> retorno = new List<Recaudo>();

                comando.Connection = Conexion();
                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = "ObtenerRecaudosRamo";
                comando.Parameters.AddWithValue("@idRamo", ramo.Id);
                comando.Parameters["@idRamo"].Direction = ParameterDirection.Input;
                MySqlDataReader reader = comando.ExecuteReader();

                while (reader.Read())
                {
                    Recaudo miRecaudo = FabricaEntidades.ObtenerRecaudo();
                    miRecaudo.Id = (int)reader[0];
                    miRecaudo.Nombre = (string)reader[1];
                    retorno.Add(miRecaudo);
                }

                reader.Close();
                CerrarConexion();
                return retorno;

            }
            catch (Exception)
            {

                return null;
            }
        }

        public List<Ramo> ObtenerRamosRecaudo(Entidad recaudo)
        {
            throw new NotImplementedException();
        }
    }
}
